package moodle.Agentes.actions.AjudanteAgente;

import java.math.BigInteger;
import java.security.acl.LastOwnerException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.ConcurrentModificationException;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.swing.JOptionPane;

import moodle.Agentes.AjudanteAgente;
import moodle.Org.MoodleEnv;
import moodle.dados.Aluno;
import moodle.dados.Curso;
import moodle.dados.Log;
import moodle.dados.mensagem.Mensagem;
import dao.GerenciaCurso;
import jamder.Environment;
import jamder.behavioural.Action;
import jamder.behavioural.Condition;

public class ExibirDicasForuns extends Action{
	
	private boolean done = false;
	private boolean mantemAtivo;

	public ExibirDicasForuns(String name, Condition pre_condition, Condition pos_condition) {
		super(name, pre_condition, pos_condition);
	}

	public ExibirDicasForuns(String name) {
		super(name);	
	}
	
	private boolean isViewForum(Aluno a){
		
		//Todos os logs do aluno
		List<Log> logsDoCurso = a.getLogs();
		
		
		String modulo = "forum";
		
		for (Log log : logsDoCurso) {
			if(log.getModule().equals(modulo)){
				return false;
			}
		}
		
		return true;
	}
	
	
	@Override
	public void execute(Environment env, Object[] params) {
		//block(12 * 1000L);
		
		mantemAtivo = ((MoodleEnv) env).getMantemAgentesAtivos();

		if (!mantemAtivo)
			return;

		GerenciaCurso manager = ((MoodleEnv) env).getGerenciaCurso();

		BigInteger useridfrom = new BigInteger("2");

		boolean podeEnviar = false;
		
		List<Curso> cursos = manager.getCursos();
		List<Aluno> todosAlunos = new ArrayList<Aluno>();

		for (Curso c : cursos) {
			Set<Aluno> alunosCurso = c.getAlunos();
			for (Aluno aluno : alunosCurso) {
				if (!todosAlunos.contains(aluno))
					todosAlunos.add(aluno);
			}
		}
		
	
			
			for(Aluno al : todosAlunos){
				podeEnviar = isViewForum(al);
				BigInteger useridto = al.getId();
				String smallmessage="Ol� "+al.getCompleteName()+", caso esteja com alguma d�vida em algum dos conteudo, ";
				smallmessage+="bastar clicar sobre o nome do curso que est� matriculado e procurar algum f�rum, ";
				smallmessage+="todos os cursos por padr�o possuem uma atividade chamada F�rum de not�cias. ";
		   	    smallmessage+="Voc� tanto pode criar um t�pico ou participar de um j� existente. ";
				smallmessage+="Em um f�rum os alunos podem interagir com tutores e professores com o objetivo de compatilhar conhecimentos ";
				smallmessage+="tirando d�vidas dos conteudos ou postando n�ticias ligadas ao assunto em discuss�o.";
				smallmessage+="Procure participar dos f�runs dos cursos em que est� matrculado, pois alguns s�o avaliativos. \n ";	
			
				
				if (podeEnviar) {
					smallmessage += "\n";
					String fullmessage = smallmessage;
					fullmessage += "\n--------------------------------------------------------------------- \nEste e-mail � uma copia de uma mensagem que foi enviada para voc� em \"GESMA\". Clique http://127.0.1.1/moodle/message/index.php?user="+ useridto+ "&id= "+ useridfrom+ " para responder. ";
					Long time = System.currentTimeMillis();
					Mensagem msg = new Mensagem();
					msg.setSubject("Nova mensagem do Administrador");
					msg.setUseridfrom(useridfrom);
					msg.setUseridto(useridto);
					msg.setSmallmessage(smallmessage);
					msg.setFullmessage(fullmessage);
					msg.setTimecreated(time);

					((MoodleEnv) env).addMensagem(msg);
				}
			}
				
		
			done = true;
		
		
	}
	
	public boolean done(){
		return done;
	}

}
